package fr.iut.tp3.view.components;

import java.awt.BorderLayout;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;

import fr.iut.tp3.Context;
import fr.iut.tp3.controller.commands.CDisparaitrePanelList;
import fr.iut.tp3.controller.commands.Commande;
import fr.iut.tp3.view.listeners.PanelListUtilisateursBtnListener;

public class PanelListeUtilisateurs extends JPanel implements TableModelListener{

	/**
	 * 
	 */
	private static final long serialVersionUID = -2744164018306443517L;
	private JLabel titreLabel = new JLabel("Liste Utilisateurs");
	private JScrollPane scrollPane;
	private JPanel mainPanel = new JPanel();
	private JButton disparaitreButton = new JButton("Disparaitre");
	private JPanel disparaitrePanel = new JPanel();

	private Context context;

	public PanelListeUtilisateurs(Context context) {
		this.context = context;
		setLayout(new BorderLayout());
		add(titreLabel, BorderLayout.NORTH);
		//.getViewport()
		scrollPane = new JScrollPane(mainPanel,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		add(scrollPane, BorderLayout.CENTER);
		disparaitrePanel.add(disparaitreButton);
		add(disparaitrePanel, BorderLayout.SOUTH);
		mainPanel.setLayout(new BoxLayout(mainPanel,BoxLayout.Y_AXIS));
		contruire();
		addListeners();
		context.getListeUtilisateurs().addTableModelListener(this);
	}

	private void contruire(){
		for (int id = 0; id < context.getListeUtilisateurs().nbUtilisateurs(); id++) {
			mainPanel.add(new PanelUtilisateur(context.getListeUtilisateurs()
					.obtenirUtilisateur(id)));
		}
	}
	
	/**
	 * Ajout des listeners.
	 */
	private void addListeners() {
		// Les commandes.
		Commande disparaitre = new CDisparaitrePanelList(context);

		// Définir les actions.
		PanelListUtilisateursBtnListener listener = new PanelListUtilisateursBtnListener(
				disparaitre);
		disparaitreButton.setActionCommand("disparaitre");
		

		// Ajout des listeners.
		disparaitreButton.addActionListener(listener);
	}

	@Override
	public void tableChanged(TableModelEvent e) {
		mainPanel.removeAll();
		contruire();
		
	}

}
